home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 20 / Cream of the Crop 20 (Terry Blount) (1996).iso / bbs / cddk9606.zip / HEADERS.ARJ / KEYBOARD.INT < prev    next >
Text File  |  1996-06-14  |  9KB  |  409 lines

  1.  
  2. { ───────────────────────────────────────────────────────────────────────── }
  3. {  KEYBOARD: Keyboard routines                                              }
  4. {  Copyright 1996 David Pinch ∙ All Rights Reserved Worldwide               }
  5. { ───────────────────────────────────────────────────────────────────────── }
  6.  
  7. UNIT Keyboard;
  8.  
  9. {$B-} { . . . . . . . . . . . . . . . . . . . . Shortcut boolean evaluation }
  10. {$F+} { . . . . . . . . . . . . . . . . . . . .  Force far calls for safety }
  11. {$I-} { . . . . . . . . . . . . . . . . . . . Disable input/output checking }
  12. {$O+} { . . . . . . . . . . . . . . . . . . Allow this unit to be overlayed }
  13. {$Q-} { . . . . . . . . . . . . . .  Do not generate overflow-checking code }
  14. {$R-} { . . . . . . . . . . . . . . . . Do not generate range-checking code }
  15. {$S-} { . . . . . . . . . . . . . . . . Do not generate stack-checking code }
  16. {$X+} { . . . . . . . . . . . Extended syntax for pChars and function calls }
  17.  
  18. INTERFACE
  19.  
  20. CONST
  21.  
  22.   ScanCode : Word = 0; { . . . . . . .  The scan code of the last keystroke }
  23.  
  24.  
  25.   { Shift Flags -- use these constants with the GetShiftFlags function.     }
  26.  
  27.   sf_RightShift = $01; { -------1 }
  28.   sf_LeftShift  = $02; { ------1- }
  29.   sf_Control    = $04; { -----1-- }
  30.   sf_Alt        = $08; { ----1--- }
  31.   sf_ScrollLock = $10; { ---1---- }
  32.   sf_NumLock    = $20; { --1----- }
  33.   sf_CapsLock   = $40; { -1------ }
  34.   sf_Insert     = $40; { 1------- }
  35.  
  36.  
  37. CONST
  38.  
  39.   { Scan-Code Constants
  40.  
  41.     KB_Alt_?   =   Scan code of the ALT key plus the letter.
  42.     KB_Ctl_?   =   Scan code of the CONTROL key plus the letter.
  43.     KB_Cap_?   =   Scan code of the capital letter.
  44.     KB_Low_?   =   Scan code of the lower-case letter. }
  45.  
  46.  
  47.   { Letters }
  48.  
  49.   KB_Alt_A  = $1E00;
  50.   KB_Ctl_A  = $1E01;
  51.   KB_Cap_A  = $1E41;
  52.   KB_Low_A  = $1E61;
  53.  
  54.   KB_Alt_B  = $3000;
  55.   KB_Ctl_B  = $3002;
  56.   KB_Cap_B  = $3042;
  57.   KB_Low_B  = $3062;
  58.  
  59.   KB_Alt_C  = $2E00;
  60.   KB_Ctl_C  = $2E03;
  61.   KB_Cap_C  = $2E43;
  62.   KB_Low_C  = $2E63;
  63.  
  64.   KB_Alt_D  = $2000;
  65.   KB_Ctl_D  = $2004;
  66.   KB_Cap_D  = $2044;
  67.   KB_Low_D  = $2064;
  68.  
  69.   KB_Alt_E  = $1200;
  70.   KB_Ctl_E  = $1205;
  71.   KB_Cap_E  = $1245;
  72.   KB_Low_E  = $1265;
  73.  
  74.   KB_Alt_F  = $2100;
  75.   KB_Ctl_F  = $2106;
  76.   KB_Cap_F  = $2146;
  77.   KB_Low_F  = $2166;
  78.  
  79.   KB_Alt_G  = $2200;
  80.   KB_Ctl_G  = $2207;
  81.   KB_Cap_G  = $2247;
  82.   KB_Low_G  = $2267;
  83.  
  84.   KB_Alt_H  = $2300;
  85.   KB_Ctl_H  = $2308;
  86.   KB_Cap_H  = $2348;
  87.   KB_Low_H  = $2368;
  88.  
  89.   KB_Alt_I  = $1700;
  90.   KB_Ctl_I  = $1709;
  91.   KB_Cap_I  = $1749;
  92.   KB_Low_I  = $1769;
  93.  
  94.   KB_Alt_J  = $2400;
  95.   KB_Ctl_J  = $240A;
  96.   KB_Cap_J  = $244A;
  97.   KB_Low_J  = $246A;
  98.  
  99.   KB_Alt_K  = $2500;
  100.   KB_Ctl_K  = $250B;
  101.   KB_Cap_K  = $254B;
  102.   KB_Low_K  = $256B;
  103.  
  104.   KB_Alt_L  = $2600;
  105.   KB_Ctl_L  = $260C;
  106.   KB_Cap_L  = $264C;
  107.   KB_Low_L  = $266C;
  108.  
  109.   KB_Alt_M  = $3200;
  110.   KB_Ctl_M  = $320D;
  111.   KB_Cap_M  = $324D;
  112.   KB_Low_M  = $326D;
  113.  
  114.   KB_Alt_N  = $3100;
  115.   KB_Ctl_N  = $310E;
  116.   KB_Cap_N  = $314E;
  117.   KB_Low_N  = $316E;
  118.  
  119.   KB_Alt_O  = $1800;
  120.   KB_Ctl_O  = $180F;
  121.   KB_Cap_O  = $184F;
  122.   KB_Low_O  = $186F;
  123.  
  124.   KB_Alt_P  = $1900;
  125.   KB_Ctl_P  = $1910;
  126.   KB_Cap_P  = $1950;
  127.   KB_Low_P  = $1970;
  128.  
  129.   KB_Alt_Q  = $1000;
  130.   KB_Ctl_Q  = $1011;
  131.   KB_Cap_Q  = $1051;
  132.   KB_Low_Q  = $1071;
  133.  
  134.   KB_Alt_R  = $1300;
  135.   KB_Ctl_R  = $1312;
  136.   KB_Cap_R  = $1352;
  137.   KB_Low_R  = $1372;
  138.  
  139.   KB_Alt_S  = $1F00;
  140.   KB_Ctl_S  = $1F13;
  141.   KB_Cap_S  = $1F53;
  142.   KB_Low_S  = $1F73;
  143.  
  144.   KB_Alt_T  = $1400;
  145.   KB_Ctl_T  = $1414;
  146.   KB_Cap_T  = $1454;
  147.   KB_Low_T  = $1474;
  148.  
  149.   KB_Alt_U  = $1600;
  150.   KB_Ctl_U  = $1615;
  151.   KB_Cap_U  = $1655;
  152.   KB_Low_U  = $1675;
  153.  
  154.   KB_Alt_V  = $2F00;
  155.   KB_Ctl_V  = $2F16;
  156.   KB_Cap_V  = $2F56;
  157.   KB_Low_V  = $2F76;
  158.  
  159.   KB_Alt_W  = $1100;
  160.   KB_Ctl_W  = $1117;
  161.   KB_Cap_W  = $1157;
  162.   KB_Low_W  = $1177;
  163.  
  164.   KB_Alt_X  = $2D00;
  165.   KB_Ctl_X  = $2D18;
  166.   KB_Cap_X  = $2D58;
  167.   KB_Low_X  = $2D78;
  168.  
  169.   KB_Alt_Y  = $1500;
  170.   KB_Ctl_Y  = $1519;
  171.   KB_Cap_Y  = $1559;
  172.   KB_Low_Y  = $1579;
  173.  
  174.   KB_Alt_Z  = $2C00;
  175.   KB_Ctl_Z  = $2C1A;
  176.   KB_Cap_Z  = $2C5A;
  177.   KB_Low_Z  = $2C7A;
  178.  
  179.   { Digits }
  180.  
  181.   KB_Num_1  = $0231;
  182.   KB_Pad_1  = $4F31;
  183.   KB_Alt_1  = $7800;
  184.  
  185.   KB_Num_2  = $0332;
  186.   KB_Pad_2  = $5032;
  187.   KB_Alt_2  = $7900;
  188.  
  189.   KB_Num_3  = $0433;
  190.   KB_Pad_3  = $5133;
  191.   KB_Alt_3  = $7A00;
  192.  
  193.   KB_Num_4  = $0534;
  194.   KB_Pad_4  = $4B34;
  195.   KB_Alt_4  = $7B00;
  196.  
  197.   KB_Num_5  = $0635;
  198.   KB_Pad_5  = $4C35;
  199.   KB_Alt_5  = $7C00;
  200.  
  201.   KB_Num_6  = $0736;
  202.   KB_Pad_6  = $4D36;
  203.   KB_Alt_6  = $7D00;
  204.  
  205.   KB_Num_7  = $0837;
  206.   KB_Pad_7  = $4737;
  207.   KB_Alt_7  = $7E00;
  208.  
  209.   KB_Num_8  = $0938;
  210.   KB_Pad_8  = $4838;
  211.   KB_Alt_8  = $7F00;
  212.  
  213.   KB_Num_9  = $0A39;
  214.   KB_Pad_9  = $4939;
  215.   KB_Alt_9  = $8000;
  216.  
  217.   KB_Num_0  = $0B30;
  218.   KB_Pad_0  = $5230;
  219.   KB_Alt_0  = $8100;
  220.  
  221.   { Function Keys }
  222.  
  223.   KB_Fun_F1 = $3B00;
  224.   KB_Shf_F1 = $5400;
  225.   KB_Ctl_F1 = $5E00;
  226.   KB_Alt_F1 = $6800;
  227.  
  228.   KB_Fun_F2 = $3C00;
  229.   KB_Shf_F2 = $5500;
  230.   KB_Ctl_F2 = $5F00;
  231.   KB_Alt_F2 = $6900;
  232.  
  233.   KB_Fun_F3 = $3D00;
  234.   KB_Shf_F3 = $5600;
  235.   KB_Ctl_F3 = $6000;
  236.   KB_Alt_F3 = $6A00;
  237.  
  238.   KB_Fun_F4 = $3E00;
  239.   KB_Shf_F4 = $5700;
  240.   KB_Ctl_F4 = $6100;
  241.   KB_Alt_F4 = $6B00;
  242.  
  243.   KB_Fun_F5 = $3F00;
  244.   KB_Shf_F5 = $5800;
  245.   KB_Ctl_F5 = $6200;
  246.   KB_Alt_F5 = $6C00;
  247.  
  248.   KB_Fun_F6 = $4000;
  249.   KB_Shf_F6 = $5900;
  250.   KB_Ctl_F6 = $6300;
  251.   KB_Alt_F6 = $6D00;
  252.  
  253.   KB_Fun_F7 = $4100;
  254.   KB_Shf_F7 = $5A00;
  255.   KB_Ctl_F7 = $6400;
  256.   KB_Alt_F7 = $6E00;
  257.  
  258.   KB_Fun_F8 = $4200;
  259.   KB_Shf_F8 = $5B00;
  260.   KB_Ctl_F8 = $6500;
  261.   KB_Alt_F8 = $6F00;
  262.  
  263.   KB_Fun_F9 = $4300;
  264.   KB_Shf_F9 = $5C00;
  265.   KB_Ctl_F9 = $6600;
  266.   KB_Alt_F9 = $7000;
  267.  
  268.   KB_Fun_F0 = $4400;
  269.   KB_Shf_F0 = $5D00;
  270.   KB_Ctl_F0 = $6700;
  271.   KB_Alt_F0 = $7100;
  272.  
  273.   { Brackets }
  274.  
  275.   KB_Open_Brace        = $1A7B;
  276.   KB_Close_Brace       = $1B7D;
  277.  
  278.   KB_Open_Bracket      = $1A5B;
  279.   KB_Ctl_Open_Bracket  = $1A1B;
  280.  
  281.   KB_Close_Bracket     = $1B5D;
  282.   KB_Ctl_Close_Bracket = $1B1D;
  283.  
  284.   KB_Open_Parenthesis  = $0A28;
  285.   KB_Close_Parenthesis = $0B29;
  286.  
  287.  
  288.   { Math }
  289.  
  290.   KB_Equal             = $0D3D;
  291.   KB_Alt_Equal         = $8300;
  292.  
  293.   KB_Less_Than         = $333C;
  294.   KB_Greater_Than      = $343E;
  295.  
  296.   KB_Minus             = $352D;
  297.   KB_GrayMinus         = $4A2D;
  298.   KB_Ctl_Minus         = $0C1F;
  299.   KB_Alt_Minus         = $8200;
  300.   KB_ShfGrayMinus      = $4A2D;
  301.  
  302.   KB_Plus              = $1A2B;
  303.   KB_GrayPlus          = $4E2B;
  304.   KB_WhitePlus         = $0D2B;
  305.   KB_ShfGrayPlus       = $4E2B;
  306.  
  307.   KB_Slash             = $352F;
  308.   KB_BackSlash         = $2B5C;
  309.   KB_Ctl_BackSlash     = $2B1C;
  310.  
  311.   { Punctuation }
  312.  
  313.   KB_Ampersand     = $0826;
  314.   KB_Apostrophe    = $2827;
  315.   KB_At            = $0340;
  316.   KB_Cater         = $075E;
  317.   KB_Colon         = $273A;
  318.   KB_Comma         = $332C;
  319.   KB_Dollar        = $0524;
  320.   KB_Exclamation   = $0221;
  321.   KB_Grave         = $2960;
  322.   KB_GrayAsterisk  = $372A;
  323.   KB_NumberSign    = $0423;
  324.   KB_Percent       = $0625;
  325.   KB_Period        = $342E;
  326.   KB_ShfPeriod     = $532E;
  327.   KB_Space         = $3920;
  328.   KB_QuestionMark  = $353F;
  329.   KB_Quote         = $2822;
  330.   KB_Semicolon     = $273B;
  331.   KB_Tilde         = $297E;
  332.   KB_UnitSeparator = $0C5F;
  333.   KB_Vertical      = $2B7C;
  334.   KB_WhiteAsterisk = $1A2A;
  335.  
  336.   { Cursor Positioning }
  337.  
  338.   KB_Up         = $4800;
  339.   KB_Down       = $5000;
  340.   KB_Left       = $4B00;
  341.   KB_Ctl_Left   = $7300;
  342.   KB_Right      = $4D00;
  343.   KB_Ctl_Right  = $7400;
  344.   KB_Home       = $4700;
  345.   KB_Ctl_Home   = $7700;
  346.   KB_End        = $4F00;
  347.   KB_Ctl_End    = $7500;
  348.   KB_PgUp       = $4900;
  349.   KB_Ctl_PgUp   = $8400;
  350.   KB_PgDown     = $5100;
  351.   KB_Ctl_PgDown = $7600;
  352.  
  353.   { Misc. Keys }
  354.  
  355.   KB_BackSpace     = $0E08;
  356.   KB_Ctl_Backspace = $0E7F;
  357.   KB_Del           = $5300;
  358.   KB_Esc           = $011B;
  359.   KB_Enter         = $1C0D;
  360.   KB_Ctl_Enter     = $1C0A;
  361.   KB_Ins           = $5200;
  362.   KB_Tab           = $0F09;
  363.   KB_Shf_Tab       = $0F00;
  364.  
  365.  
  366. {#Start}
  367.  
  368. FUNCTION GetShiftFlags:Byte;
  369.   {
  370.   PURPOSE  : Returns the status of the control keys on the keyboard.
  371.  
  372.   NOTES    : 76543210
  373.              │││││││└ Right shift
  374.              ││││││└─ Left shift
  375.              │││││└── Control
  376.              ││││└─── Alt
  377.              │││└──── Scro